package com.example.stmp.Service.Student;

/**
 * 学生服务接口，用于处理与学生相关的操作
 */
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import com.example.stmp.Entity.Student;
import java.util.List;

/**
 * 定义学生服务接口，提供学生信息导入功能
 */
@Service
public interface StudentService {
    /**
     * 从Excel文件中导入学生信息
     *
     * @param file 包含学生信息的Excel文件
     * @throws IOException 如果文件读取过程中发生错误
     */
    void importStudentsFromExcel(MultipartFile file) throws IOException;

    /**
     * 添加学生信息
     *
     * @param student 学生对象，包含学生详细信息
     */
    void addStudent(Student student);

    /**
     * 删除学生信息
     *
     * @param stId 学生ID，用于标识特定的学生
     * @param status 学生状态，用于逻辑删除
     */
    void deleteStudent(String stId, int status);

    /**
     * 更新学生信息
     *
     * @param student 学生对象，包含更新后的学生信息
     */
    void updateStudent(Student student);

    /**
     * 根据学生ID和状态获取学生信息
     *
     * @param stId 学生ID，用于标识特定的学生
     * @param status 学生状态，用于筛选活动或非活动学生
     * @return 学生对象，包含查询到的学生信息
     */
    Student getStudentById(String stId, int status);

    /**
     * 获取所有学生信息
     *
     * @return 学生列表，包含所有学生的信息
     */
    List<Student> getAllStudents();

    /**
     * 按条件查询学生信息
     * @param stId 学号
     * @param stName 姓名
     * @param acId 行政班ID
     * @param role 角色
     * @return 学生列表
     */
    List<Student> queryStudents(String stId, String stName, String acId, String role);
}
